# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Jobs.V4.Model.CommuteFilter do
  @moduledoc """
  Parameters needed for commute search.

  ## Attributes

  *   `allowImpreciseAddresses` (*type:* `boolean()`, *default:* `nil`) - If `true`, jobs without street level addresses may also be returned. For city level addresses, the city center is used. For state and coarser level addresses, text matching is used. If this field is set to `false` or isn't specified, only jobs that include street level addresses will be returned by commute search.
  *   `commuteMethod` (*type:* `String.t`, *default:* `nil`) - Required. The method of transportation to calculate the commute time for.
  *   `departureTime` (*type:* `GoogleApi.Jobs.V4.Model.TimeOfDay.t`, *default:* `nil`) - The departure time used to calculate traffic impact, represented as google.type.TimeOfDay in local time zone. Currently traffic model is restricted to hour level resolution.
  *   `roadTraffic` (*type:* `String.t`, *default:* `nil`) - Specifies the traffic density to use when calculating commute time.
  *   `startCoordinates` (*type:* `GoogleApi.Jobs.V4.Model.LatLng.t`, *default:* `nil`) - Required. The latitude and longitude of the location to calculate the commute time from.
  *   `travelDuration` (*type:* `String.t`, *default:* `nil`) - Required. The maximum travel time in seconds. The maximum allowed value is `3600s` (one hour). Format is `123s`.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :allowImpreciseAddresses => boolean() | nil,
          :commuteMethod => String.t() | nil,
          :departureTime => GoogleApi.Jobs.V4.Model.TimeOfDay.t() | nil,
          :roadTraffic => String.t() | nil,
          :startCoordinates => GoogleApi.Jobs.V4.Model.LatLng.t() | nil,
          :travelDuration => String.t() | nil
        }

  field(:allowImpreciseAddresses)
  field(:commuteMethod)
  field(:departureTime, as: GoogleApi.Jobs.V4.Model.TimeOfDay)
  field(:roadTraffic)
  field(:startCoordinates, as: GoogleApi.Jobs.V4.Model.LatLng)
  field(:travelDuration)
end

defimpl Poison.Decoder, for: GoogleApi.Jobs.V4.Model.CommuteFilter do
  def decode(value, options) do
    GoogleApi.Jobs.V4.Model.CommuteFilter.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Jobs.V4.Model.CommuteFilter do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
